'use strict';
/**
 * 莫凡服务端model层示例
 *
 * 只有在service层才能调用model层数据库接口，不允许在controller层调用
 * 注意事项：
 * 1. 调用model层时，首字母必须大写，否则找不到
 * 2. 在调用数据时，不建议使用 Sequelize 自带的创建时间和修改时间，这样会产生东8区的时差问题
 * 3. 在写一些比较复杂的sql语句时，如果对于 Sequelize 不熟的话，可以选择自定义 sql ，用 app.model.query(sql)
 *
 */
module.exports = app => {
	const Sequelize = app.Sequelize;
	//const { STRING, INTEGER, DATE,  } = app.Sequelize;

	const SysLoginUser = app.model.define('piaget_sys_login', {
		// 用户id
		user_id: {
			type: Sequelize.INTEGER,
			primaryKey: true,
			autoIncrement: true,
		},
		//	用户名称
		user_name: {
			type: Sequelize.STRING,
		},
		//	登陆账户
		login_name: {
			type: Sequelize.STRING,
		},
		//	密码
		password: {
			type: Sequelize.STRING,
		},
		//	状态
		status: {
			type: Sequelize.INTEGER,
		},
		// 创建时间
		created_at: {
			type: Sequelize.DATE,
		}
	}, {
		tableName: 'piaget_sys_login',
		timestamps: false,
		underscoredAll: true
	});

	/**
	 * 查询一条数据，通过mixnick进行查询
	 */

	SysLoginUser.findbyLoginName = function(login_name, password) {
		return new Promise((resolve, reject) => {
			this.findOne({
				where: {
					login_name: login_name,
					password: password
				}
			}).then(function(data) {
				if(data.dataValues){
					resolve(data.dataValues);
				}else{
					resolve(null);
				}
			}).catch((err) => {
				reject(err);
			});
		});
	};

	return SysLoginUser;
};
